package com.fz.us.admin.company.service;

import com.fz.us.admin.base.bean.BaseEnumManager;
import com.fz.us.admin.base.bean.Result;
import com.fz.us.admin.base.bean.search.order.Order;
import com.fz.us.admin.base.bean.search.page.PagePaging;
import com.fz.us.admin.base.bean.search.result.SearchResultList;
import com.fz.us.admin.base.bean.search.result.SearchResultPaging;
import com.fz.us.admin.base.bean.search.rule.Rule;
import com.fz.us.admin.base.service.BaseService;
import com.fz.us.admin.company.entity.Company;
import com.fz.us.admin.company.entity.Department;
import com.fz.us.admin.company.entity.Post;
import com.fz.us.admin.company.entity.User;

import java.util.List;
import java.util.Map;

/**
 * Service接口 - 岗位
 * ============================================================================
 * 版权所有 2016 。
 *
 * @author fallenpanda
 * @version 1.0 2016-08-02 。
 * ============================================================================
 */
public interface PostService extends BaseService<Post, String> {



	/**
	 * 保存
	 *
	 * @param user
	 * @param post
     * @return
     */
	public Result createEntity(User user, Post post);

	/**
	 * 修改
	 *
	 * @param user
	 * @param post
	 * @return
	 */
	public Result updateEntity(User user, String keyId, Post post);

	/**
	 * 操作
	 *
	 * @param user
	 * @param method
	 * @param keyId
	 * @return
	 */
	public Result methodEntity(User user, String method, String keyId);

	/**
	 * 分页 企业下岗位
	 *
	 * @param page
	 * @param order
	 * @param company
	 * @return
	 */
	public SearchResultPaging pagingPost(PagePaging page, List<Rule> rules, Order order, Company company, BaseEnumManager.StateEnum... states);

	/**
	 * 列表 企业下岗位
	 *
	 * @param order
	 * @param company
	 * @return
	 */
	public SearchResultList listPost(List<Rule> rules, Order order, Company company, BaseEnumManager.StateEnum... states);

	/**
	 * 列表 Map
	 *
	 * @param post
	 * @return
	 */
	public Map<String, Object> getListMap(Post post);

	/**
	 * 详情 Map
	 *
	 * @param post
	 * @return
	 */
	public Map<String, Object> getDetailMap(Post post);

}